Companies and other organizations typically maintain information about many different aspects of the organization in order to ensure efficient operation. This organizational information (or organizational data) describes people, resources, applications, and the like, which make up the organization. For example, organizational information descriptive of an employee may include his/her name, job title, salary, telephone number, and/or internet protocol (IP) address. Organizational information describing an application may include the application's name and associated services provided by the application. Organizational information describing a resource may describe the resource as a network device (e.g., a printer), the name of the device, and capabilities provided by the network device. Many other types of organizational information may be maintained.
The organizational information is typically maintained in a number of remote data storage repositories, such as databases, directories, text files, and others. For example, the human resources (HR) department may have a data repository of all employees in the company, with employee information. The information technology (IT) department may have a data repository of all email accounts and internet protocol (IP) addresses associated with employees, applications, resources, etc. Data in the repositories frequently overlaps, meaning that some information may be common among more than one repository. In a typical organization, each of the data repositories is independently maintained by the department that owns the repository. For example, the HR department maintains its own employee information, while the IT department maintains its own network information.
Because each of the various remote data repositories is independently maintained by the department that owns the data repository, and there may be data common among them, inconsistencies may arise among the data repositories. For example, the HR department repository may have employee “John Smith”, and may list an email address of “johns@company.com”; the IT department may initially have John Smith's email address as “johns@company.com”, but may change the address to “johns@company.com” when another employee, “John Simpson”, joined the company. Thus, when the IT department changes John Smith's email address in the IT repository, the email address is no longer consistent with John Smith's email address in the HR department repository. For many other reasons, information stored in data repositories may become inconsistent within an organization. Thus, organizations typically attempt to manage their various data repositories so as to keep the information in them consistent, as well as up-to-date, accurate, and readily available.
In theory, in order to efficiently and effectively manage organizational data, the various remote data repositories could be replaced with one large repository, modifiable by the various organizational departments; however, this solution is very impractical for a few reasons. Firstly, in practice, political boundaries associated with departments in a typical organization make this solution impractical because departments typically want to control their own data. Secondly, departments are typically modeled on a division of labor model wherein each department has expertise only with regard to the information with which the department is concerned. Thus, it is impractical to have, for example, the HR department updating IP address and email address information in one large repository.
As a result, traditional systems for managing an organization's data repositories and their associated organizational information involve linking the multiple remote repositories, while allowing the each department to independently modify its own repository. One such system is a metadirectory, which is a directory of directories or repositories. In traditional metadirectories, data from each of a number of repositories is received by an associated interface that negotiates between the remote repository and a central repository. The central repository includes data representing a combination of data in all the remote repositories. Each of the interfaces typically executes scripts in response to specified events, such as the hiring/firing of an employee, or the changing of an IP or email address.
Traditionally, the scripts of one metadirectory interface were developed/changed on a per-interface basis; i.e., each metadirectory interface was developed/updated independently from the other metadirectory interfaces. Different programmers may develop/update the various interfaces and may not be aware of how other programmers are developing/updating other interfaces to take in the same data types. Even if the same programmer develops or updates all the metadirectory interfaces, the programmer may forget or lose track of how the same data types are formatted from one interface to the other. Thus, interfaces to the metadirectory do not necessarily act consistently with each other when bringing in data. For example, a metadirectory interface to the HR repository may format employee name data in the form: <last name>, <first name>, <middle initial>; while the metadirectory interface to the IT repository may format employee name data in the form: <first name>, <last name>. As such, when a metadirectory interface is developed and/or updated obliviously to other metadirectory interfaces, data in the central repository can become redundant, inconsistent, or otherwise erroneous, with regard to data format, naming, syntax and the like.